R-Tek Scratchpad Version 1.00 TSPadDatad TPictured TCommentTextd TLogFontd Times New Roman densed BT Nonparametric Statistics nnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond A:50*onesvec(10) TExpressiond B:60*onesvec(12) TCommentTextd Note that you can freeze the random number generator with a call to randomize(seed) here. This allows you to regenerate the same random A and B matrices repeatedly. See below. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TMatLoopd TExpressiond TExpressiond A[i]:A[i]+rnd(-20.0) TEndMatLoopd TCommentTextd Initially we will start with populations differing in mean. You should come back, change the mean, change the scatter, Decide for yourself how discriminating the Wilcoxon test is. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TMatLoopd TExpressiond TExpressiond B[i]:B[i]+rnd(-20.0) TEndMatLoopd TCommentTextd produce an augmented column vector M from A and B1 nnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnn] TExpressiond TExpressiond TExpressiond M:(ATUBT)T TExpressiond MR:statrank(M) TExpressiond Si:1@rows(A)@MR[i]@ TCommentTextd The above shows what goes on behind the scenes of the ranksum calculationI nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd Wilcoxon Rank Sum Test nnnnnnnnnnnnnnnnnnnnnn] TCommentTextd sum for A nnnnnnnnn] TExpressiond W:ranksum(A,B) TExpressiond A:rows(A) TExpressiond B:rows(B) TCommentTextd Note the use of literal subscripts A and B use Alt+D to create themC nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond B+1))/2 TExpressiond W:\((n B+1))/12) THardPageBreakd TCommentTextd both matrices must contain 10 elements or more. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond W:(W- TCommentTextd two tail test nnnnnnnnnnnnn] TCommentTextd TExpressiond a:0.05 TExpressiond pnorm( TCommentTextd compare pnorm to z and decide whether the data suggests that the two samples A and B come from differing populations. You might want to freeze the random number generator as mentioned above by seeding it with randomize. Then you could compare these results to those you would have obtained had you called ranksum(B, A) instead. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz] TCommentTextd Mann-Whitney Test nnnnnnnnnnnnnnnnn] TCommentTextd Equivalent to the Wilcoxon rank sum test via:- nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond mannwhitney(A,B) TExpressiond B+((n A+1))/2)-W TCommentTextd where the W used here is calculated based on A, ie with ranksum(A, B), not B, AO nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond TExpressiond U:\((n B+1))/12) TCommentTextd compare nnnnnnn] TExpressiond TExpressiond U:(U- TCommentTextd compare to nnnnnnnnnn] TExpressiond TCommentTextd Sign Test nnnnnnnnn] TExpressiond ngen:12 TExpressiond A:50*onesvec(ngen) TExpressiond B:60*onesvec(ngen) TCommentTextd A and B must be same size vectors! nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TMatLoopd TExpressiond TExpressiond A[i]:A[i]+rnd(-20.0) TCommentTextd Initially we will start with populations differing in mean. You should come back, change the mean, change the scatter, Decide for yourself how discriminating the tests are. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond B[i]:B[i]+rnd(-20.0) TEndMatLoopd THardPageBreakd TExpressiond TExpressiond TExpressiond M:AUB TExpressiond statrank(M) TExpressiond ST:signtest(A,B) TExpressiond S:ST[1] TCommentTextd number of plus differences betwee the elements of A and B9 nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond n:ST[2] TCommentTextd number nonzero differences between the elements of A and B: nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond S:n/2 TExpressiond S:\n/2 TCommentTextd n must be 10 or more nnnnnnnnnnnnnnnnnnnn] TExpressiond S:(ST[1]- TCommentTextd again, for nnnnnnnnnn] TExpressiond a:0.05 TExpressiond pnorm( THardPageBreakd TCommentTextd Wilcoxon Signed-Rank Test nnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond SR:signedrank(A,B) TExpressiond T:SR[1] TCommentTextd sum of signed ranks for the pairs with nonzero differences: nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond n:SR[2] TCommentTextd number of nonzero differences between the elements of A and B= nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd n must be 10 or more nnnnnnnnnnnnnnnnnnnn] TExpressiond TExpressiond T:\((n*(n+1)*(2*n+1))/6) TExpressiond T:(T- TCommentTextd Kruskal-Wallis Test nnnnnnnnnnnnnnnnnnn] TCommentTextd similar to Wilcoxon rank-sum test, but applies to more than two samplesH nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond D:58*onesvec(ngen) TExpressiond C:55*onesvec(ngen) TCommentTextd create two more samples to go with A and B* nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TMatLoopd TExpressiond TExpressiond C[i]:C[i]+rnd(-20.0) TExpressiond D[i]:D[i]+rnd(-20.0) TCommentTextd Initially we will start with populations differing in mean. You should come back, change the mean, change the scatter, Decide for yourself how discriminating the tests are. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TEndMatLoopd TExpressiond M:AUBUCUD TExpressiond SR:statrank(M) TExpressiond THardPageBreakd TCommentTextd Behind the scenes nnnnnnnnnnnnnnnnn] TExpressiond n:rows(SR)*cols(SR) TExpressiond K:(12.0/(n*(n+1))*Si:1@cols(SR)@(sum(SR )^2/rows(SR))@)-3*(n+1)A TCommentTextd simpler is: nnnnnnnnnnn] TExpressiond 1.0*kruskalwallis(M) TExpressiond pchisq(0.95,cols(SR)-1) TCommentTextd Note that the built-in kruskalwallis() requires same sized samples. This is only a restriction of the this function, not the test itself. If your samples are not the same size, proceed as follows: We will pretend A, B, C, and D are different sizes even though they are not. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd create a combined vector from the originals+ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond V:(ATUBTUCTUDT)T TExpressiond nItems:M00040001rows(A)@rows(B)@rows(C)@rows(D)@0 TCommentTextd create a vector of the sizes of the original vectors in the same order that they were augmented into the combined vector. Here they are all of size ngen, but this will not always be the case. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond 1.0*kruskalwallisv(nItems,V) TCommentTextd Number of Runs Test nnnnnnnnnnnnnnnnnnn] TCommentTextd Used to discover whether the elements of a sequence are in random order.H nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd We will analyze the vector V that we just created above for runs. We pass the numruns function the vector with data and a number that serves to divide the data into two groups. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd Returns vector with 4 elements number of runs >= separator number of runs < separator number of vector elements >= separator number of vector elements < separator nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzznnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond NR:numruns(V,65) THardPageBreakd TCommentTextd if we refer to the elements >= separator as Heads, then7 nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond H:NR[3] TExpressiond T:NR[4] TExpressiond RH:\((n T+1)*(n H-1))/((n T)^2)*(n T-1)))> TExpressiond RH:(n T+1))/(n TNumberFormatDatad TExpressiond RH:(NR[1]- TCommentTextd The Friedman Test nnnnnnnnnnnnnnnnn] TExpressiond r:1.0*friedman(M) TCommentTextd Behind the scenes: nnnnnnnnnnnnnnnnnn] TExpressiond b:rows(M) TExpressiond k:cols(M) TExpressiond TMatLoopd TExpressiond TCommentTextd loop over the rows of R nnnnnnnnnnnnnnnnnnnnnnn] TExpressiond :statrank(R TEndMatLoopd TExpressiond TExpressiond THardPageBreakd TExpressiond r:(12/(b*k*(k+1))*Si:1@k@sum(R )^2@)-3*b*(k+1)2 TNumberFormatDatad TCommentTextd compare to nnnnnnnnnnn] TExpressiond pchisq(0.95,k-1) TCommentTextd either k or b must be more than 5! nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd Spearman's Rank Correlation nnnnnnnnnnnnnnnnnnnnnnnnnnn] TCommentTextd provides a measure of how well two rankings are correlated It ranges from -1 to 1 with -1 indicating perfect aniticorrelation, 0 no correlation, and 1 perfect correlation. nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond B:statrank(B) TExpressiond A:statrank(A) TCommentTextd There is nothing special about these list. I just used statrank() to produce vectors containing random rankings from vectors containing random numbers. nnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnn] TExpressiond s:rankcorr(A,B) TPrinterDimensionsd TSPadInitDatad TLogFontd Times New Roman densed BT TLogFontd Arial TLogFontd Arial TLogFontd Symbol TLogFontd Symbol TNumberFormatDatad TGraphSetupDatad TPageSetupDatad R-Tek Scratchpad Example File RANKSTAT